package org.freedoit.server.service.task;

import java.lang.reflect.Type;
import java.sql.Timestamp;

import org.freedoit.common.data.FreeDoitTaskRequest;
import org.freedoit.common.data.FreeDoitTaskResponse;
import org.freedoit.server.om.Task;
import org.freedoit.server.service.ServiceManager;
import org.freedoit.server.util.Utils;
import org.freedoit.common.shared.SharedTask;

public class UpdateTaskServlet extends AbstractTaskServlet<FreeDoitTaskRequest, FreeDoitTaskResponse> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 102304901720346460L;

	/**
	 * 
	 */
	protected void workOnTask(SharedTask sharedTask, Long currentUserId, Long currentClientId,
			FreeDoitTaskResponse result, Long timestamp) {
		// TODO Auto-generated method stub
		Task task = Utils.fromSharedData(sharedTask);
		if (ServiceManager.updateTask(task, currentClientId, new Timestamp(timestamp))) {
			result.setCode(FreeDoitTaskResponse.CODE_OK);
			result.setTimestamp(timestamp.longValue());
		} else {
			result.setCode(FreeDoitTaskResponse.CODE_INVALID_DATA);
		}
	}

	protected FreeDoitTaskResponse createResponseObject() {
		// TODO Auto-generated method stub
		return new FreeDoitTaskResponse();
	}

	protected void processRequest(
			ServiceContext<FreeDoitTaskRequest, FreeDoitTaskResponse> context,
			Long timestamp) {
		// TODO Auto-generated method stub
		
	}
	
	protected Type getRequestType() {
		return new com.google.gson.reflect.TypeToken<FreeDoitTaskRequest>() {  
		}.getType();
	}

}
